package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 快速兑换交易实体类，记录快速兑换交易的详细信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "quick_exchange")
public class QuickExchange {

    /**
     * 交易ID，主键。
     */
    @ApiModelProperty(value = "交易ID")
    private Long id;

    /**
     * 兑换人ID，通常是用户ID。
     */
    @ApiModelProperty(value = "兑换人ID")
    private Long memberId;

    /**
     * 源币种，交易前的货币单位。
     */
    @ApiModelProperty(value = "源币种")
    private String fromUnit;

    /**
     * 目标币种，交易后的货币单位。
     */
    @ApiModelProperty(value = "目标币种")
    private String toUnit;

    /**
     * 兑换比例，从源币种到目标币种的转换比率。
     */
    @ApiModelProperty(value = "兑换比例")
    private BigDecimal rate;

    /**
     * 源兑换数量，用户希望兑换的源币种的数量。
     */
    @ApiModelProperty(value = "源兑换数量")
    private BigDecimal amount;

    /**
     * 目标兑换数量，根据兑换比例计算出的目标币种的数量。
     */
    @ApiModelProperty(value = "目标兑换数量")
    private BigDecimal exAmount;

    /**
     * 状态，交易的状态：
     * 0：未成交，
     * 1：已成交，
     * 2：用户取消，
     * 3：管理员撤回。
     */
    @ApiModelProperty(value = "交易状态，0：未成交，1：已成交，2：用户取消，3：管理员撤回")
    private int status = 0;

    /**
     * 创建时间，交易创建的时间戳。
     */
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;
}
